//
//  LXJHomeController.swift
//  XJWeiBo
//
//  Created by 李旭杰 on 2017/3/26.
//  Copyright © 2017年 李旭杰. All rights reserved.
//

import UIKit

/// 首页视图控制器

/// 微博的 cell重用 id
let weiboCellID = "weiboCellID"

class LXJHomeController: LXJVisitorViewController {
    
    /// 数据源属性
    fileprivate lazy var homeViewModel: LXJHomeViewModel = LXJHomeViewModel()
    
    // MARK: 控件的懒加载
    /// 下拉刷新
    fileprivate lazy var dropDownRefreshing: UIRefreshControl = {
        let ref = UIRefreshControl()
        return ref
    }()
    /// 上拉加载
    fileprivate lazy var pullUpLoading: UIActivityIndicatorView = {
        let ref = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
        ref.color = UIColor.gray
        return ref
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        /// 登录状态下使用首页视图
        if isLogin {
            /// 添加控件
            //  tableView.refreshControl = dropDownRefreshing
            tableView.tableFooterView = pullUpLoading
            /// 界面搭建
            setupUI()
        }else{/// 非登录状态下使用访客视图控制器
            visitorView?.updateVisitorView(imageName: nil, message: nil)
        }
    }
    
    // MARK: 界面搭建
    private func setupUI() -> Void {
        /// 设置 tableview 的界面
        setupTableViewUI()
        /// 加载首页数据
        requestHomeWeiboData()
    }
    
    // MARK: 界tableView的页面搭建
    fileprivate func setupTableViewUI() -> Void {
        /// 注册单元格
        tableView.register(LXJHomeWeiboCell.self, forCellReuseIdentifier: weiboCellID)
        /// 设置行高
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 400
        /// 取消分割线效果
        tableView.separatorStyle = .none
    }
    
    // MARK: 加载首页数据
    func requestHomeWeiboData() -> Void {
        homeViewModel.requestHomeWeiboInfo { (isSuccess) in
            if isSuccess{
                /// 刷新数据源
                self.tableView.reloadData()
            }else{
                print("首页数据请求失败")
            }
        }
    }
}

// MARK: tableView 的数据原方法的实现
extension LXJHomeController {
    
    // 组内数量
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return homeViewModel.homeWeiboList?.count ?? 0
    }
    
    /// cell 的样式
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: weiboCellID, for: indexPath) as! LXJHomeWeiboCell
        /// 模型赋值
        cell.weibo = homeViewModel.homeWeiboList![indexPath.row]
        /// 取消 cell 的选中效果
        cell.selectionStyle = .none
        return cell
    }
    
    /// 监听上拉加载 本也列表的最后一行的时候
    override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        if indexPath.row == (homeViewModel.homeWeiboList?.count)! - 1, !pullUpLoading.isAnimating {
            /// 打开上拉加载的动画
            pullUpLoading.startAnimating()
        }
    }
}
